現在我們已經能夠靠點擊連結來切換我們想要訪問的路徑,並且利用切換頁面元件的方式達到切換頁面的效果,是不是越來越有單頁式應用程式的感覺了呢!
那麼今天要介紹的是,如果我的單一路徑上要載入不只一個元件的話,
該怎麼做呢?直接來看範例:
//src/components/Menu.vue
<template>
  <div>
    <router-link to="/page">Child1</router-link>
    <router-link to="/page/child2">Child2</router-link>
    <router-link to="/page/child3">Child3</router-link>
  </div>
</template>
<script>
export default {
  name: 'Menu',
  data () {
    return {
      
    }
  }
}
</script>
首先我先將之前 Page.vue 裡的所有連結的部份,都用 Menu.vue 分離出來。
//src/App.vue
<template>
  <div id="app">
    <img src="./assets/logo.png">
    <ul>
      <li>
        <router-link :to="{name: 'HelloWorld'}">Home</router-link>
      </li>
      <li>
        <router-link to="/page">Page</router-link>
      </li>
    </ul>
    <router-view name="Menu"/> //router-view 並給 name 的屬性
    <router-view/> //切換 HelloWorld 和 Page 的頁面的
  </div>
</template>
然後,這些連結我希望只有在 page 這個頁面才要顯示出來,這裡我先加上一個新的 router-view,下面的是切換 HelloWorld 和 Page 的頁面的,而上面的可以看到我有加上 name 的屬性,並且給他 Menu 的值,這就是為了指定這個 router-view 是載入 Menu 這個元件。
//router/index.js
import Menu from '@/components/Menu'
export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/page',
      components: {
        default: Page,
        Menu: Menu //name 為 Menu 的 router-view 會載入 Menu 這個元件
      },
      children: [
        {
          path: '',
          name: 'Child1',
          component: Child1
        },
        {
          path: 'child2',
          name: 'Child2',
          component: Child2
        },
        {
          path: 'child3',
          name: 'Child3',
          component: Child3
        },
      ]
    },
  ]
})
當我們將上述的元件都準備好後,再來要到 index.js 去作路由的設定,改的部份並沒有很多,將原本的 component 改為 components,然後預設的元件為 Page,第二個則是剛剛設定為 name 的 router-view 要載入的元件是為 Menu,這麼一來就可以正確載入兩個頁面元件囉!
那麼,明天再見囉!